package br.com.sgpv2.hibernate.evento;

import java.util.List;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.evento.Evento;
import br.com.sgpv2.entity.movimentacao.Movimentacao;

public interface EventoRepository {
	
	/**
	 * Método que salva um evento no sistema.
	 */
	void salvar(Evento evento);

	/**
	 * Método que busca um evento no sistema.
	 */
	Evento buscar(Integer pk) throws NegocioExeception;

	/**
	 * Método que altera um evento no sistema.
	 */
	void alterar(Evento evento);

	/**
	 * Método que lista todos os Eventos do sistema.
	 */
	List<Evento> listar();

	/**
	 * Método que exclui um evento do sistema.
	 */
	void excluir(Evento evento);

	/**
	 * Método que retorna todos as movimenta��es de um determinado evento.
	 */
	List<Movimentacao> listarMovimentacoesPorEvento(int parseInt);

	/**
	 * Método que retorna o evento pelo c�digo.
	 */
	Evento buscarPorCodigo(String codigo);
	
	/**
	 * Método retorna todas os Eventos ordenadas pelo atributo informado.
	 * @param atributoOrder
	 * @return
	 */
	List<Evento> listarOrder(String atributoOrder);
	
	/**
	 * Método retorna os eventos que possuem a descricao informada.
	 * @param descricao
	 * @return
	 */
	List<Evento> consultarPorDescricao(String descricao);
	
}
